﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using MotorMetricas.Entidades;
using MotorMetricas.Datos.Interfaces;
using MotorMetricas.Datos.FabricaDatos;
using MotorMetricas.Entidades.FabricaEntidades;


namespace MotorMetricas.Datos.DaosSqlServer
{
    public class DaoSqlServerAccesoProyecto : IDaoAccesoProyecto
    {

        IDaoAccesoConexion bd = FabricaConexion.DaoSqlServerAccesoConexion();

        public List<Proyecto> ConsultarTodosProyectos(List<Proyecto> proyectos)
        {
            List<Proyecto> proyects = proyectos;

            SqlCommand command = new SqlCommand();

            try
            {
                bd.AbrirConexionBd();

                command.Connection = bd.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure; //Tipo de comando que se va a ejecutar
                command.CommandText = "[dbo].[SELTodosLosProyectos]"; // Nombre del Procedimiento Almacenado en la Base de Datos
                command.CommandTimeout = 10;

                SqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    Proyecto proyecto = new Proyecto();
                    Fecha fecha = new Fecha();
                    proyecto.Id = reader.GetInt32(0);
                    proyecto.NombreProyecto = reader["NombreProyecto"].ToString();
                    proyecto.Status = reader["Estatus"].ToString();
                    proyecto.Ruta = reader["Ruta"].ToString();
                    proyecto.Dias = reader.GetInt32(4);
                    proyecto.IdPerfilMetrica = reader.GetInt32(5);
                    fecha.Fecha1 = DateTime.Parse(reader["Fecha"].ToString());
                    proyecto.Fechas.Add(fecha);

                    proyectos.Add(proyecto);
                }


                reader.Close();
                bd.CerrarConexionBd();
                return proyectos;

            }

            catch (SqlException)
            {
                bd.CerrarConexionBd();
                return null;
            }

            catch (Exception)
            {
                bd.CerrarConexionBd();
                return null;
            }
        }

    }
}
